/**
 * Copyright ©2003~2019年4月25日 szkingdom
 * @author raohj
 * @date 2019年4月25日
 * @file RCglibProxy.java
 * @comment : please input your comment to this file
 * @version : input version
 * @modify:
 * 		1、 2019年4月25日 由 raohj 新建文件
 */
package com.ccnu.demojava.proxy;

import net.sf.cglib.core.DebuggingClassWriter;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * @author raohj
 * @date 2019年4月25日
 * @version 
 * @comment to add your comment
 */
public class RCglibProxy {
	public static void proxySample() {
		System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "D:\\temp\\class");
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(RCglibClass.class);
        enhancer.setCallback(new MethodInterceptor() {
            @Override
            public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
                System.out.println("before" +  method.getName()+" run...");
                Object result = proxy.invokeSuper(obj, args);
                System.out.println("after " +  method.getName()+" run...");
                return result;
            }
        });
        RCglibClass sample = (RCglibClass) enhancer.create();
        sample.getName();
	}
}
